package com.atguigu.gulimall.ware;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

/**
 * @author 高朋
 */
/*
 * 本地事务失效问题:
 * 同一个事务内方法互调默认失效(事务还可以用,但是其他设置比如超时时间就没用了)
 * 原因是绕过了代理对象,事务是使用代理对象来控制的
 * 解决方案:使用代理对象来调用事务方法
 *  1.引入aop-starter(aspectJ)
 *  2.@EnableAspectJAutoProxy(exposeProxy = true),开启aspectJ动态代理(默认是jdk的动态代理)
 *                             对外暴露代理对象
 *  3.用代理对象本类互调
 *     a(){
 *      OrderServiceImpl orderService =(OrderServiceImpl) AopContext.currentProxy();
        orderService.b();
        orderService.c();
* }*/
@EnableFeignClients
@EnableAspectJAutoProxy(exposeProxy = true)
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallWareApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallWareApplication.class, args);
    }

}
